﻿// Copyright 2008 Chris Varley (http://www.contractdriven.net/)
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

using System;

namespace ContractExample
{
	class Program
	{
		static void Main()
		{
			try
			{

				using(var t = new ExampleClass())
				{
					
                    //If you look in the ExampleClass.cs file, 
                    //you'll see a number of Invariants that you can break by setting properties 
                    //and calling methods on an instance of an ExampleClass object.
                    //you can experiment here to see what happens.
                    //Try setting t.MyInt = 42 

					t.MyInt = 5;
                    t.MyInt = 42;
					t.IncrementMyInt();
				}

			}
			catch(Exception ex)
			{
				Console.Write(ex.ToString());
			}

            Console.WriteLine("Press any key to close");
			Console.ReadKey();
		}
	}
}
